/* Использование LCD функций и макросов для дисплеев, подключенных в режиме 
   отображения 8 битовой памяти */

/* Используется LCD 2x16, микроконтроллер AT90S8515.
   Схема подключения см. рис. 382 */ 

/* Демонстрируется вывод текста, содержащего русские буквы */

#include <90s8515.h> 		// подключаем  заголовочный файл используемого 
				   		// микроконтроллера AVR
 
/* Теперь, перед использованием LCD функций и макросов для дисплеев, 
   подключенных в режиме отображения 8-битовой памяти, подключим 
   заголовочный файл lcdstk.h */ 
#include <lcdstk.h>

/* Определим тип данных byte 
   byte==unsigned char */
typedef unsigned char byte;

/* Основная функция программы */ 

void main(void)
{
/* инициализируем LCD 2x16 */
lcd_init(16);

_lcd_ready();		// ждем, пока модуль LCD не будет готов 
// принять данные
/* очистим LCD;
   установим позицию для вывода символа в ряд 0 и столбец 0 */
lcd_clear();

/* Выведем слово "Makros" в середину верхней строки LCD, т.е. первая 
   буква должна быть выведена в 5-ую ячейку (5-ое знакоместо) верхней
   строки LCD 
   	   Счет ячеек начинается с 0 */

/* Сначала переместим курсор на 5 позиций вправо 
   Для этого выберем для макроса _LCD_RS0 код команды сдвига курсора
   вправо на одну позицию (см. табл. 64, стр. 480) и повторим этот
   макрос 5 раз 
   Т.к. в коде команды два самых младших бита могут быть любыми, то
   можно использовать код от 0x14 до 0x17 */

   	_lcd_ready();		// ждем, пока модуль LCD не будет готов 
// принять данные
_LCD_RS0=0x14; 		// Сдвинем курсор на одну позицию вправо

/* Повторим еще 4 раза */
_lcd_ready();		
_LCD_RS0=0x14;
_lcd_ready();		
_LCD_RS0=0x15;
_lcd_ready();		
_LCD_RS0=0x16;
_lcd_ready();		
_LCD_RS0=0x17;

/* Теперь в текущую позицию выведем слово "Makros" */
_lcd_ready();		
_LCD_RS1='M';
_lcd_ready();		
_LCD_RS1='a';
_lcd_ready();		
_LCD_RS1='k';
_lcd_ready();		
_LCD_RS1='r';
_lcd_ready();		
_LCD_RS1='o';
_lcd_ready();		
_LCD_RS1='s';

/* Выведем слово "Макрос" в середину второй строки, т.е. первая буква
   должна быть выведена в 5-ую ячейку (5-ое знакоместо) второй 
   строки LCD */

/* Сначала переместим курсор в 5-ую позицию нижней строки LCD */

lcd_gotoxy(5,1);   

/* Теперь в текущую позицию выведем слово "Макрос" 
   Коды символов см. табл. 61, стр. 477 */
_lcd_ready();		
_LCD_RS1=0x4d;
_lcd_ready();		
_LCD_RS1=0x61;
_lcd_ready();		
_LCD_RS1=0xba;
_lcd_ready();		
_LCD_RS1=0x70;
_lcd_ready();		
_LCD_RS1=0x6f;
_lcd_ready();		
_LCD_RS1=0x63;

/* Завершим программу бесконечным циклом */ 
while (1); 
}			// закрывающая скобка функции main
